﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BolsaTalentos.BLL;

namespace InterfazBolsaTalentos.Egresado
{
    public partial class Aplicaciones : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.PoblarGridView_VacantesActivas();
            this.PoblarGridView_VacantesInactivas(); 
        }

        protected void GridView_AplicacionesActivas_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Label_DetallesVacanteAplicada.Text = "Habilidades requeridas en vacante:"; 
            this.TextBox_DetallesVacanteAplicada.Visible = true; 
            this.PoblarTextBox_DetallesVacanteAplicada();

            this.Button_DesactivarAplicacion.Enabled = true;
        }
        protected void GridView_AplicacionesIncativas_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Button_ActivarAplicacion.Enabled = true;
        }

        protected void Button_DesactivarAplicacion_Click(object sender, EventArgs e)
        {
            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).DesactivarAplicacion(Convert.ToInt32(this.GridView_AplicacionesActivas.Rows[this.GridView_AplicacionesActivas.SelectedIndex].Cells[1].Text));

            this.Response.Redirect("Aplicaciones.aspx");
        }
        protected void Button_ActivarAplicacion_Click(object sender, EventArgs e)
        {
            try
            {
                ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).ActivarAplicacion(Convert.ToInt32(this.GridView_AplicacionesIncativas.Rows[this.GridView_AplicacionesIncativas.SelectedIndex].Cells[1].Text));
                
                this.Response.Redirect("Aplicaciones.aspx");
            }
            catch 
            {
                //Lo ideal seria poner la propiedad Visible = true. pero asp se pajarea
                this.Label_MensajeErrorActivarAplicacion.Text = "Esta aplicacion no se puede activar porque la vacante a la que estaba asociada ya no existe";
            }
        }

        private void PoblarGridView_VacantesActivas()
        {
            var AplicacionesSource = from a in ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Aplicaciones
                                     where a.SiActiva == true
                                     select new
                                     {
                                         ID = a.ID,
                                         VacanteAplicada = a.VacanteAplicada.Descripcion,
                                         Empresa = a.VacanteAplicada.Publicante.Nombre,
                                         FechaPublicacion = a.FechaPublicacion,
                                         Comentario = a.Comentario,
                                     };

            if (AplicacionesSource.Count() == 0)
            {
                //Lo ideal seria poner la propiedad Visible = true. pero asp se pajarea
                this.Label_NoAplicacionesActivas.Text = "Usted no tiene ninguna aplicacion activa";
                return;
            }
            else
            {
                this.Label_NoAplicacionesActivas.Text = "";
            }

            //this.GridView_Vacantes.DataSource = BolsaTalentos.BLL.Vacante.GetAllVacantes();
            this.GridView_AplicacionesActivas.DataSource = AplicacionesSource;
            this.GridView_AplicacionesActivas.DataBind();
            //this.HideUnwantedColumns();          // this shit just wont work!
        }
        private void PoblarGridView_VacantesInactivas()
        {
            var AplicacionesSource = from a in ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Aplicaciones
                                     where a.SiActiva == false
                                     select new
                                     {
                                         ID = a.ID,
                                         VacanteAplicada = a.VacanteAplicada.Descripcion,
                                         Empresa = a.VacanteAplicada.Publicante.Nombre,
                                         FechaPublicacion = a.FechaPublicacion,
                                         Comentario = a.Comentario,
                                     };

            if (AplicacionesSource.Count() == 0)
            {
                //Lo ideal seria poner la propiedad Visible = true. pero asp se pajarea
                this.Label_NoAplicacionesInactivas.Text = "Usted no tiene ninguna aplicacion inactiva";
            }
            else 
            {
                this.Label_NoAplicacionesInactivas.Text = "";
            }

            //this.GridView_Vacantes.DataSource = BolsaTalentos.BLL.Vacante.GetAllVacantes();
            this.GridView_AplicacionesIncativas.DataSource = AplicacionesSource;
            this.GridView_AplicacionesIncativas.DataBind();
            //this.HideUnwantedColumns();          // this shit just wont work!
        }
        private void PoblarTextBox_DetallesVacanteAplicada()
        {
            this.TextBox_DetallesVacanteAplicada.Text = "";

            Aplicacion TempApl = new Aplicacion(Convert.ToInt32(this.GridView_AplicacionesActivas.Rows[this.GridView_AplicacionesActivas.SelectedIndex].Cells[1].Text));

            foreach (Habilidad item in TempApl.VacanteAplicada.Habilidades)
            {
                this.TextBox_DetallesVacanteAplicada.Text += (item.Descripcion + "\n");
            }
        }

        protected void Button_LogOff_Click(object sender, EventArgs e)
        {
            this.Session["UsuarioDeSesion"] = null;

            this.Response.Redirect("../General/Default.aspx");
        }

        protected void Button_MostrarPanelAplicacionesActivas_Click(object sender, EventArgs e)
        {
            this.Panel_AplicacionesActivas.Visible = !(this.Panel_AplicacionesActivas.Visible);
        }
        protected void Button_MostrarAplicacionesInactivas_Click(object sender, EventArgs e)
        {
            this.Panel_AplicacionesInactivas.Visible = !(this.Panel_AplicacionesInactivas.Visible);
        }
    }
}
